package com.ruoyi.web.milk;

/**
 * @Program: RuoYi-Vue-chy->box
 * @Description: 牛奶对象
 * @Author: hongyu.chen
 * @Date: 2025-03-07 15:23
 * @Version： 1.0
 **/
public class Box {
    //定义一个成员变量，表示第x瓶奶
    private int milk;
    //定义一个成员变量，表示奶箱的状态 true表示已经有该牛奶了
    private boolean state = false;

    //提供储存牛奶和获取牛奶的操作
    public synchronized void put(int milk) {
        //如果有牛奶，那么就不执行
        if (state){
            System.out.println("已经有了第" + this.milk + "瓶奶");
            try {
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

        //如果没有那么就生成奶
        this.milk = milk;
        System.out.println("送奶工将第" + this.milk + "瓶奶放入奶箱");
        state = true;

        //唤醒其他等待的方法
        notify();
    }

    public synchronized void get(){
        //如果没有那么就没办法获取奶
        if (!state){
            System.out.println("用户喝完了第" + this.milk + "瓶奶，正在等下一瓶");
            try {
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

        //如果有牛奶，那么就获取奶
        System.out.println("用户得到第" + this.milk + "瓶奶");
        state = false;
        //唤醒其他等待的方法
        notify();
    }
}
